﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.ServiceModel.Channels;
using System.ComponentModel;
using System.ServiceModel.Channels;
using System.Net.Mail;
using System.Net.Configuration;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.UtilidadesWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.ClienteWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.VendasWs;

namespace PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.GUI
{
    public partial class ClienteCarrinho : System.Web.UI.Page
    {
        TableHeaderRow linha = new TableHeaderRow();

        TableHeaderCell celulaNome = new TableHeaderCell();
        Label textoNome = new Label();

        TableHeaderCell celulaValorDose = new TableHeaderCell();
        Label textoValorDose = new Label();

        TableHeaderCell celulaQtde = new TableHeaderCell();
        Label textoQtde = new Label();

        TableHeaderCell celulaSubTotal = new TableHeaderCell();
        Label textoSubTotal = new Label();

        TableHeaderCell celulaAcao = new TableHeaderCell();
        Label textoAcao = new Label();

        PubClub_Cliente_WS webServiceCliente = new PubClub_Cliente_WS();
        ObjetoCliente cliente = new ObjetoCliente();
        Utilizadades_WS util = new Utilizadades_WS();
        PubClub_Vendas_WS webServiceVendas = new PubClub_Vendas_WS();
        ObjetoRetornoPedido objetoRetornoPedido = new ObjetoRetornoPedido();

        String carrinho;
        String[] listaCarrinho;
        string bebidaId = "";
        string qtd = "";
        double total = new double();
        string qtde2 = "";
        string listadeBebidas = "";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Cliente"] == null)
            {
                Response.Redirect("Login.aspx?Logout=2");
            }

            else
            {
                cliente = webServiceCliente.GetCliente(Convert.ToInt32(Session["Cliente"]));
            }

            labelAviso.Visible = false;

            if (Session["carrinho"].Equals(""))
            {
                labelAviso.Text = "Você não adicionou nenhum item. Seu carrinho está vazio no momento";
                labelAviso.Visible = true;
                buttonFinalizarCompra.Enabled = false;
                buttonLimparCarrinho.Enabled = false;
                return;
            }
            else
            {
                textoNome.Text = "Bebida";
                celulaNome.Controls.Add(textoNome);
                linha.Cells.Add(celulaNome);

                textoValorDose.Text = "Valor da dose";
                celulaValorDose.Controls.Add(textoValorDose);
                linha.Cells.Add(celulaValorDose);

                textoQtde.Text = "Quantidade de doses";
                celulaQtde.Controls.Add(textoQtde);
                linha.Cells.Add(celulaQtde);

                textoSubTotal.Text = "Subtotal";
                celulaSubTotal.Controls.Add(textoSubTotal);
                linha.Cells.Add(celulaSubTotal);

                textoAcao.Text = "Ação";
                celulaAcao.Controls.Add(textoAcao);
                linha.Cells.Add(celulaAcao);

                tabelaCarrinho.Rows.Add(linha);


                if (Request.QueryString["Excluir"] != null)
                {
                    carrinho = Session["carrinho"].ToString().Replace(Request.QueryString["Excluir"].ToString() + ',', "");

                    listaCarrinho = carrinho.Split(',');

                    Session["carrinho"] = carrinho;

                    labelAviso.Text = "Item excluido com sucesso.";
                    labelAviso.ForeColor = System.Drawing.Color.Green;
                    labelAviso.Visible = true;
                }
                else
                {

                    carrinho = Session["carrinho"].ToString();

                    listaCarrinho = carrinho.Split(',');
                }


                for (int i = 0; i < listaCarrinho.Count() - 1; i++)
                {
                    TableRow linha2 = new TableRow();
                    if (i % 2 != 0)
                    {
                        linha2.CssClass = "odd";
                    }

                    TableCell celulaNome2 = new TableCell();
                    Label textoNome2 = new Label();

                    TableCell celulaValorDose2 = new TableCell();
                    Label textoValorDose2 = new Label();

                    TableCell celulaQtde2 = new TableCell();
                    Label textoQtde2 = new Label();

                    TableCell celulaSubTotal2 = new TableCell();
                    Label textoSubTotal2 = new Label();

                    TableCell celulaAcao2 = new TableCell();

                    double subTotal = new double();

                    bebidaId = listaCarrinho[i].Substring(0, listaCarrinho[i].IndexOf("-"));
                    qtd = listaCarrinho[i].Substring(listaCarrinho[i].IndexOf("-") + 1, (listaCarrinho[i].Length - 1) - listaCarrinho[i].IndexOf("-"));

                    listadeBebidas += bebidaId.ToString() + "-" + qtd + ",";

                    textoNome2.Text = util.GetBebidaById(Convert.ToInt32(bebidaId)).Descricao;

                    celulaNome2.Controls.Add(textoNome2);
                    linha2.Cells.Add(celulaNome2);

                    textoValorDose2.Text = "R$ " + util.GetBebidaById(Convert.ToInt32(bebidaId)).Valor.ToString("N2");
                    celulaValorDose2.Controls.Add(textoValorDose2);
                    linha2.Cells.Add(celulaValorDose2);

                    textoQtde2.Text = qtd;
                    celulaQtde2.Controls.Add(textoQtde2);
                    linha2.Cells.Add(celulaQtde2);

                    subTotal = Convert.ToDouble(util.GetBebidaById(Convert.ToInt32(bebidaId)).Valor.ToString("N2")) * Convert.ToDouble(textoQtde2.Text);

                    textoSubTotal2.Text = "R$ " + subTotal.ToString("N2");
                    celulaSubTotal2.Controls.Add(textoSubTotal2);
                    linha2.Cells.Add(celulaSubTotal2);

                    ImageButton imageButtonLixeira = new ImageButton();
                    imageButtonLixeira.ImageUrl = "../Imagens/IconeInativar.png";
                    imageButtonLixeira.OnClientClick = "confirm('Deseja remover a bebida?')";
                    imageButtonLixeira.PostBackUrl = "ClienteCarrinho.aspx?excluir=" + listaCarrinho[i];
                    imageButtonLixeira.ToolTip = "Remover item do carrinho.";
                    celulaAcao2.Controls.Add(imageButtonLixeira);
                    linha2.Cells.Add(celulaAcao2);

                    tabelaCarrinho.Rows.Add(linha2);

                    total += subTotal;


                    labelTotal.Text = "Total: R$ " + total.ToString("N2");

                }

                if (carrinho.Equals(""))
                {
                    tabelaCarrinho.Visible = false;
                    total = 0;
                    labelTotal.Visible = false;
                    labelAviso.Text = "Todos os itens foram excluidos. Seu carrinho está vazio no momento.";
                    labelAviso.Visible = true;
                    buttonFinalizarCompra.Enabled = false;
                    buttonLimparCarrinho.Enabled = false;
                    return;
                }
                else
                {
                    tabelaCarrinho.Visible = true;
                }
            }

        }

        protected void buttonFinalizarCompra_Click(object sender, EventArgs e)
        {


            objetoRetornoPedido = webServiceVendas.RealizarVenda(cliente.ClienteId, listadeBebidas);

            if (objetoRetornoPedido.Sucesso == true)
            {
                //labelAviso.Text = objetoRetornoPedido.Menssagem;
                //labelAviso.ForeColor = System.Drawing.Color.Green;
                //labelAviso.Visible = true;

                //Session["Carrinho"] = "";

                Response.Redirect("~/GUI/ClienteRealizarCompra.aspx?SucessoCompra=1");

                #region confirmação de email
                /*string remetenteEmail = "estudosrodrigo@gmail.com";
                MailMessage email = new MailMessage();

                email.To.Add("estudosrodrigo@gmail.com");
                email.From = new MailAddress(remetenteEmail, "Rodrigo Souza", System.Text.Encoding.UTF8);

                email.Subject = "Assunto:Este e-mail é um teste pubclub ";

                email.SubjectEncoding = System.Text.Encoding.UTF8;

                email.Body = "Teste email pubclub";

                email.BodyEncoding = System.Text.Encoding.UTF8;

                email.IsBodyHtml = true;

                email.Priority = MailPriority.High; //Prioridade do E-Mail



                SmtpClient client = new SmtpClient();  //Adicionando as credenciais do seu e-mail e senha:

                client.Credentials = new System.Net.NetworkCredential(remetenteEmail, "");



                client.Port = 587; // Esta porta é a utilizada pelo Gmail para envio

                client.Host = "smtp.gmail.com"; //Definindo o provedor que irá disparar o e-mail

                client.EnableSsl = true; //Gmail trabalha com Server Secured Layer << valor do site q eu peguei  é true - scandurra

                try
                {

                    client.Send(email);

                    labelAviso.Text = "Envio do E-mail com sucesso";

                    labelAviso.Visible = true;

                }

                catch (Exception ex)
                {

                    labelAviso.Text = "Ocorreu um erro ao enviar:" + ex.Message + ex.InnerException.Message;

                    labelAviso.Visible = true;

                }*/
                #endregion
                

            }
            else
            {
                labelAviso.Text = objetoRetornoPedido.Menssagem;
                labelAviso.ForeColor = System.Drawing.Color.Red;
                labelAviso.Visible = true;
                
            }
        }

        protected void buttonLimparCarrinho_Click(object sender, EventArgs e)
        {
            Session["carrinho"] = "";

            buttonFinalizarCompra.Enabled = false;
            buttonLimparCarrinho.Enabled = false;
            Response.Redirect("ClienteCarrinho.aspx");

        }

        protected void buttonContinuarComprando_Click(object sender, EventArgs e)
        {
            Response.Redirect("ClienteRealizarCompra.aspx");
        }


    }
}